What is stream-to-array?
The stream-to-array npm package is a utility that allows you to collect all the data from a stream into an array. This can be particularly useful when you need to process the entire content of a stream at once, rather than handling it piece by piece.
What are stream-to-array's main functionalities?
Convert Stream to Array
This feature allows you to convert a readable stream into an array. The example demonstrates creating a readable stream, pushing data into it, and then converting the stream into an array using the stream-to-array package.
const streamToArray = require('stream-to-array');
const { Readable } = require('stream');
const readable = new Readable({
read() {}
});
readable.push('data1');
readable.push('data2');
readable.push(null);
streamToArray(readable, (err, arr) => {
if (err) throw err;
console.log(arr); // ['data1', 'data2']
});
Other packages similar to stream-to-array
concat-stream
The concat-stream package is similar to stream-to-array in that it collects all the data from a stream. However, instead of converting the stream to an array, it concatenates the data into a single Buffer, string, or array, depending on the input type. This can be useful if you need the entire content as a single entity rather than an array of chunks.
bl
The bl (Buffer List) package is another alternative that collects data from a stream into a single Buffer object. It provides more advanced features for handling binary data and can be more efficient for certain use cases compared to stream-to-array.
stream-buffers
The stream-buffers package provides a way to collect data from a stream into a buffer. It offers both writable and readable stream buffers, making it versatile for various use cases where you need to handle stream data as buffers.
Stream to Array
Concatenate a readable stream's data into a single array.
You may also be interested in:
API
var toArray = require('stream-to-array')
toArray([stream], [callback(err, arr)])
Returns all the data objects in an array.
This is useful for streams in object mode if you want to just use an array.
var stream = new Stream.Readable()
toArray(stream, function (err, arr) {
assert.ok(Array.isArray(arr))
})
If stream
is not defined, it is assumed that this
is a stream.
var stream = new Stream.Readable()
stream.toArray = toArray
stream.toArray(function (err, arr) {
})
If callback
is not defined, then it returns a promise.
toArray(stream)
.then(function (parts) {
})
If you want to return a buffer, just use Buffer.concat(arr)
toArray(stream)
.then(function (parts) {
var buffers = []
for (var i = 0, l = parts.length; i < l ; ++i) {
var part = parts[i]
buffers.push((part instanceof Buffer) ? part : new Buffer(part))
}
return Buffer.concat(buffers)
})